package com.evenmo.hrms.mapper.oldmapper;

import com.evenmo.hrms.mapper.oldmapper.dynaSqlProvider.JobDynaSqlProvider;
import com.evenmo.hrms.pojo.Job;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

public interface JobMapper {


    /**
     * 查询职位列表
     *
     * @return 符合条件的职位列表
     */
    @Select("select * from job")
    public List<Job> selectJobs();


    /**
     * 通过Id查询职位
     *
     * @param id 职位ID
     * @return 职位信息对象
     */
    @Select("select * from job where id=#{id}")
    public Job selectById(Integer id);


    /**
     * 查询符合条件的职位数目
     *
     * @param job 查询的职位信息，传入job对象
     * @return 符合条件的数量
     */
    @Select("select count(1) from job where name like concat('%',#{name},'%')")
    public int countByParams(Job job);

    // 动态查询

    /**
     * 动态查询<br/>
     * key为job，value为job对象
     * name和remark可以模糊查询，传入以下两种参数的key所对应的value:
     * nameLikeParam
     * remarkLikeParam
     *
     * @param params 查询参数，用map封装
     * @return 符合条件的职位列表
     */
    @SelectProvider(type = JobDynaSqlProvider.class, method = "selectByParmams")
    public List<Job> selectByParmams(Map<String, Object> params);
    // 根据ID删除

    /**
     * 根据ID删除
     *
     * @param id 职位ID
     * @return 删除的数目
     */
    @Delete("delete from job where id=#{id}")
    public int deleteById(Integer id);


    /**
     * 动态插入职位
     *
     * @param job 职位信息
     * @return 插入的数目
     */
    @InsertProvider(type = JobDynaSqlProvider.class,method = "insertByParams")
    @Options(keyProperty = "id", useGeneratedKeys = true)
    public int insertByParams(Job job);

    // 动态修改职位

    /**
     * 动态修改职位
     * @param jobForInfo 要修改的职位信息
     * @param params 修改的条件,key可以传入condition，value值是job对象，封装条件，条件是id或者name的值
     * @return 修改的数量
     */
    @UpdateProvider(type = JobDynaSqlProvider.class, method = "updateByParams")
    public int updateByParams(@Param("jobForInfo") Job jobForInfo,@Param("params") Map<String,Object> params);
}
